它可以将 Polkadot 吞吐量提高 8 倍,为波卡 2.0 打好基础?“异步支持” 是什么
加入 PolkaWorld 社区,共建 Web 3.0!
Polkadot 的一项重大优化 —— 异步支持(Asynchronous Backing)已经上线至 Rococo 测试链,预计年底上线至 Kusama。它通过优化平行链区块的验证过程,有望将 Polkadot 的吞吐量提高 8 倍,并为波卡 2.0 的敏捷核心时间打下基础。
那么 Polkadot 的异步支持的原理是什么?为什么它对 Polkadot 的性能和扩展性有重要的影响?它什么时候可以上线?本文将尝试回答这些问题。
什么是 Polkadot 的异步支持?
平行链区块验证机制
我们都知道 Polkadot 是一个跨链网络,由中继链负责平行链的共享安全性。为了实现这一目标,Polkadot 需要一种高效和可靠的共识协议,来确保平行链的状态和交易能够被中继链验证。
在 Polkadot 中,平行链区块由收集人(Collator)在平行链上生成,然后发送给中继链上的验证人(Validator)来进行支持(backing)。
“支持” 指的是平行链区块由一组验证人(支持组)进行验证的过程,平行链区块只需要被一个验证人支持即可,但支持并不能保证平行链区块的有效性。
经过支持后的平行链区块会被发送到其他验证人那里,然后被包含到中继链上。每个平行链区块在生成时,必须锚定到一个叫 “中继链父块” 的中继链区块上。而中继父块又是生成下一个平行链区块的必备上下文。要注意的是,一个平行链区块的中继父块,和将它包含到中继链上的中继链区块不是同一个。
同步支持
在正式理解异步支持之前,我们先来看看原来的运行模式,也就是同步支持(Synchronous Backing)。
在同步支持中,平行链区块的生成和中继链的进程紧密相关:
只有在上一个平行链区块被中继链包含后,才能生成一个新的平行链区块。
构建下一个平行链区块的上下文,是从最新包含的平行链区块的祖先提取的。
中继父块必须是最新的中继链区块。
在这些条件的约束下,每个平行链区块要花 6 秒(一个中继链区块)来获得支持,再花另外 6 秒来被包含。因此一个平行链区块从出块到被包含到中继链上,需要 12 秒的时间。
而且,虽然整个过程需要 12 秒,但留给收集人生成区块的时间却最多只有 0.5 秒,因为平行链区块需要在剩下的 5.5 秒内完成支持和散布消息(gossip)。
异步支持
在异步支持中,支持和包含可以发生在同一个中继链区块内。而且可以使用较旧的中继父块来创建新的平行链区块。
同步支持 vs 异步支持,来源:Polkadot Wiki
从上图可以清楚地看异步支持带来的优势。
在左边的同步支持模式下,一个平行链区块先需要 6 秒来支持,另外 6 秒来包含,这一套全部完成后才能开始生成下一个平行链区块,因此每 12 秒才能包含 1 个平行链区块。
在右边的异步支持模式下,在 6 秒内既可以包含上一个区块,又可以为下一个区块做支持,因此每 6 秒就能包含 1 个平行链区块。
另外,由于异步支持允许使用较旧的中继父块来创建新的平行链区块,这让收集人有了更多时间去生成平行链区块,平行链区块的生成时间从原来的 0.5 秒增加到 2 秒。
一个比喻 —— 厨艺比赛
如果你觉得上面这些解释还是有点抽象,那么可以看看 Web3 基金会的 Filippo Franchini 给出的一个形象化的比喻。
我们可以把平行链出块过程比喻成一场厨艺比赛,平行链是厨师,中继链是评委。
在同步支持中,每 12 秒揭晓一本新菜谱(中继父块),厨师(平行链)需要在 0.5 秒内火速收集食材(数据)并且做好菜(填充区块)。
在异步支持中,厨师们可以从更多的菜谱(中继父块)中挑选,一些菜谱比较旧了,但是也很有价值。这样一来,厨师就有更多时间(2 秒)来选择最合适的食材(数据)并且做好菜(填充区块)。
也就是说,同步支持看重的是做菜速度和使用最新的菜谱。而异步支持看重的是精心准备,和充分利用资源。
在这两种情况下,厨师都需要按照特定的菜谱来做菜,也就是平行链需要锚定父块来生产平行链区块。但是在同步支持中,厨师只能选择最新菜谱,而在异步支持中,厨师也可以从更旧的菜谱中做选择。
另外,在同步支持中,一次只能端上来一盘菜,每 12 秒才能展示(支持)和评价(包含)完一盘菜(平行链区块)。
而在异步支持中,可以一边评价一盘菜,一边展示下一盘菜,这样每 6 秒就能评价完一盘菜。
异步支持能将 Polkadot 的性能提高多少?
总结一下,异步支持带来的最显著的好处是:
执行时间提升了 4 倍:执行时间从 0.5 秒增加到 2 秒
平行链出块时间缩减一半:平行链区块出块时间从 12 秒缩短到 6 秒。
两项叠加,就让平行链的吞吐量提升到了原来的 8 倍,同时不影响网络的安全性。
在早些发布的 Polkadot 路线图中估计,异步支持可以让 Polkadot 的总体 TPS 达到 10 万 - 100 万。
短期来看,异步支持上线后,Polkadot 本身以及平行链的性能都会显著提升,让区块空间的利用得到优化。
长期来看,异步支持作为一项重要的基础能力,将为 Polkadot 2.0 升级打下基础。有了异步支持,才能实现 “敏捷核心时间 (agile coretime)” ,从而以更灵活、更高性价比的方式来分配和管理区块空间,让 Polkadot 2.0 能够成为 Web3 中的 “云计算” 服务基础设施。
当前进展
目前异步支持功能已经部署到了 Rococo 测试网上,可供测试,预计在今年年底上线 Kusama,之后在通过审计、测试和治理的批准后将上线至 Polkadot。详情见《Parity:已在 Rococo 上部署异步支持并启动 Coretime 功能!》。
总结
异步支持是自平行链共识协议推出以来,Polkadot 共识的首次重大优化,它可以将 Polkadot 的吞吐量提高 8 倍左右,让 Polkadot 的性能和可扩展性达到新的高度,从而为 Web3 的各种使用场景提供更好的支持。
另外,异步支持还支持创建平行链区块队列,让区块空间可以更灵活地调度,为 Polkadot 朝 2.0 迭代打下基础。
参考资料:
https://wiki.polkadot.network/docs/learn-async-backing
https://www.polkadot.network/blog/elevating-polkadots-performance-and-scale-with-asynchronous-backing
https://www.polkadot.network/blog/polkadot-roadmap-roundup
https://polkadot-blockchain-academy.github.io/pba-book/polkadot/async-backing-deep/page.html
PolkaWorld Telegram 群:
https://t.me/+z7BUktDraU1mNWE1
PolkaWorld Youtube 频道:
https://www.youtube.com/c/PolkaWorld
PolkaWorld Twitter:
@polkaworld_org
更多内容
Parity:已在 Rococo 上部署异步支持并启动 Coretime 功能!
Polkadot 国库支出报告出炉,2023 截止目前共花费 2100 万美元,开发占比最高
波卡周报|部署 Coretime 到 Rococo 的 PR 已提交,预计年底上线 Rococo 测试网!
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!